<?php
namespace Common\Model;
use Think\Model;

/**
* 日志模型基类
* 
* 日志的查询、新增、删除等业务封装
* 
* @author: xuhui <xuh86@126.com>
* @version: $Id$
* @package: asoc.Common.Model
*/

class LogsModel extends Model{
	
	protected $tableName = "admin_log";
	protected $userLogTable = "UserLog";
	
	/**
	 * 根据管理员日志
	 * @param int $id: 日志id
	 * @return array
	 */
	public function getAdminLogById($id){
		return $id > 0 ? $this->find($id) : NULL;
	}
	
	/**
	 * 根据用户日志
	 * @param int $id: 日志id
	 * @return array
	 */
	public function getUserLogById($id){
		return $id > 0 ? M($this->userLogTable)->find($id) : NULL;
	}
	
	/**
	 * 添加管理员操作日志
	 * @param string $loginfo:日志具体类型
	 * @param int $uid: 操作人员idid
	 * @param string $level: login、logout、action
	 * @param string $ip:操作者ip
	 */
	public function addAdminLog($loginfo,$uid,$level='action',$ip=''){
		$this->addLog($loginfo,$uid,0,$level,$ip);
	}
	/**
	 * 添加用户操作日志
	 * @param string $loginfo:日志具体类型
	 * @param int $uid: 操作人员idid
	 * @param string $level: login、logout、action
	 * @param string $ip:操作者ip
	 */
	public function addUserLog($loginfo,$uid,$ip=''){
		$this->addLog($loginfo,$uid,1,'',$ip);
	}
	
	/**
	 * 添加日志操作
	 * @param string $info:日志内容
	 * @param int $uid:操作者id
	 * @param int $type:日志类型 0为管理员日志 1为用户日志
	 * @param string $cate:管理员日志的日志级别
	 * @param string $ip:操作ip
	 * @return boolean
	 */
	private function addLog($info,$uid,$type=0,$level='',$ip=''){
		$flag = false;
		$dateTime =	date('Y-m-d H:i:s');
		$data['user_id'] = $uid;
		$data['add_time'] = $dateTime;
		$data['log_info'] = $info;
		$data['user_ip'] = $ip == '' ? get_client_ip() : $ip ;		//操作ip
		if($type == 0){
			$data['log_type']	=	$level;
			$this->add($data) ? $flag = true : false;
		}else{
			M($this->userLogTable)->add($data) ? $flag = true : false;
		}
		return $flag;
	}
	
	/**
	 * 根据查询条件返回分页数据
	 * 
	 * @param mixed $map: 查询过滤条件
	 * @param int $currentPage:当前页
	 * @param int $pageSize: 每页大小
	 * @param string $sortBy: 排序条件
	 * @return array 
	 */
	public function getItemListBy($map,$currentPage=1,$pageSize=10,$sortBy=''){

		$items	=	NULL;
		$count	=	0;			//总条数
		
		//主键
		$pk		=	$this->getPk();
		
		//排序参数
		$sortBy	=	empty($sortBy) ? $pk." DESC " : $sortBy;
		
		if($currentPage>0 && $pageSize>0){	//分页查询
			
			$items	=	$this->where($map)->order($sortBy)->page($currentPage.','.$pageSize)->select();
		
		}else{//根据条件查询全部

			$items	=	$this->where($map)->order($sortBy)->select();
		
		}
		
		$count	=	$this->where($map)->count();
		
		return array('items'=>$items,'count'=>$count);
	}
	
	
	
	
}

?>